﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using Entidades.Sistema.Venta;

namespace Modelo.Sistema.Venta
{
    public class CatalogoContacto
    {
        
        private List<Contacto> Col_contacto;

        public CatalogoContacto()
        {
            Col_contacto = Mapping.Sistema.Venta.MappingContacto.ConsultarContactos();
        }


        public ReadOnlyCollection<Contacto> ListarContacto()
        {
            return Col_contacto.AsReadOnly();
        }

        public bool AgregarContacto(Contacto oContacto)
        {
            oContacto.IdContacto = GetMayor();

            oContacto.IdContacto = oContacto.IdContacto + 1;
            Col_contacto.Add(oContacto);
            return Mapping.Sistema.Venta.MappingContacto.AgregarContacto(oContacto);
        }

        public bool EliminarContacto(Contacto oContacto)
        {
            //Col_contacto.Remove(oContacto);
            Col_contacto.RemoveAll(x => x.IdContacto == oContacto.IdContacto);
            return Mapping.Sistema.Venta.MappingContacto.EliminarContacto(oContacto);
        }
        public void ModificarContacto(Contacto oContacto)
        {

            Mapping.Sistema.Venta.MappingContacto.ModificarContacto(oContacto);

            Col_contacto.RemoveAll(x => x.IdContacto == oContacto.IdContacto);
            Col_contacto.Add(oContacto);
        }
        public Contacto BuscarContacto(int idContacto)
        {
            return this.Col_contacto.Find(unid => unid.IdContacto == idContacto);
        }
        public bool ValidarExistencia(Contacto oContacto)
        {
            if (this.Col_contacto.Count(unid => unid.IdContacto == oContacto.IdContacto) == 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }


        public Int32 GetMayor()
        {
            if (Col_contacto.Count == 0) return 0;

            Int32 maxIdContacto =
                (from pro in Col_contacto
                 select pro.IdContacto)
                .Max();

            return maxIdContacto;
        }
    }
}
